package user;

import ioperations.*;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-06-22
 * Time: 9:55
 */
public class NormalUser extends User {
    public NormalUser(String name) {
        super(name);
        this.iOperations = new IOperation[] {
                new ExitOperation(),
                new FindOperation(),
                new BorrowOperation(),
                new ReturnOperation()
        };
    }

    @Override
    public int menu() {
        System.out.println("欢迎" + this.name + "来到图书系统");
        System.out.println("*******普通用户菜单*******");
        System.out.println("1. 查找图书");
        System.out.println("2. 借阅图书");
        System.out.println("3. 归还图书");
        System.out.println("0. 退出系统");
        System.out.println("**********************");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的操作：");
        int choice = scanner.nextInt();
        return choice;
    }
}

/*
`NormalUser`类是`User`类的另一个子类，代表图书系统的普通用户。以下是`NormalUser`类逻辑关系的简短分析：

1. **继承关系**：
   - `NormalUser`继承了`User`类，因此它继承了父类的所有属性和方法，并可以根据需要覆盖或添加新的方法。

2. **构造方法**：
   - 构造方法接受普通用户的名字作为参数，并通过调用父类的构造方法来初始化该名字。
   - 在构造方法中，还初始化了`iOperations`数组，这个数组包含了普通用户可以执行的操作。这些操作包括退出系统、查找图书、借阅图书和归还图书。

3. **覆盖的`menu`方法**：
   - `menu`方法在`NormalUser`类中被覆盖，以提供普通用户特定的菜单选项。
   - 方法首先打印欢迎信息和普通用户菜单，然后提示用户输入他们的操作选择。
   - 使用`Scanner`类从控制台接收用户的输入，该输入代表用户想要执行的操作编号。
   - 返回用户选择的操作编号，此编号稍后将用于调用`doIoperation`方法，以执行用户选择的操作。

简而言之，`NormalUser`类通过继承`User`类并定制其`menu`方法，为普通用户提供了特定的操作菜单和功能。普通用户可以执行查找、借阅和归还图书等操作，这些操作是通过`iOperations`数组中相应位置的操作类来实现的。这个类与`AdminUser`类相似，但提供的操作和功能是根据普通用户的需求来定制的。
 */